import { getServerConfig } from '../ormconfig';
import { NestFastifyApplication } from '@nestjs/platform-fastify';
import rateLimit from '@fastify/rate-limit';
import { logger } from '@/common/log4js/logger.middleware';
import { setupSwagger } from '@/configuration/setup-swagger.configuration';

export const setupApp = async (app: NestFastifyApplication) => {
    const config = getServerConfig();
    console.log('config', config);

    // 设置 api 访问前缀
    if (config.API_PREFIX) {
        app.setGlobalPrefix(<string>config.API_PREFIX);
    }

    // 获取真实IP - Fastify内置了IP获取，无需额外中间件

    // 注册Fastify速率限制插件
    await app.register(<any>rateLimit, {
        max: 300, // 每个IP限制请求数
        timeWindow: '1 minute', // 时间窗口
    });

    // 注册日志中间件
    // app.use(logger);

    // 初始化Swagger文档 - 确保setupSwagger兼容Fastify
    setupSwagger(app);

    // 如果你需要启用Helmet安全头部
    // 首先安装: pnpm add @fastify/helmet
    // 然后取消下面这行注释
    // await app.register(import('@fastify/helmet'));
};
